Drap and Drop


Drag and Drop

A drag and drop operation allows moving data, files or objects from one GUI element to another one. A drag and drop operation can also move data, file or objects from one program to another program. The drag operation begins when the user presses the left button of the mouse and starts moving the mouse. The drop operation occurs when the user releases the button of the mouse.
Una operación de arrastre y soltar permite mover datos, archivos u objetos desde un elemento GUI a otro elemento. Una operación de arrastre y soltar puede también mover datos, archivos u objetos desde un programa a otro programa. La operación de arrastre comienza cuando el usuario presione el botón izquierdo del ratón y comienza a mover el ratón. La operación de soltar ocurre cuando el usuario libera el botón del ratón.

Problem 1
Cree a Wintempla Window Application called LeaveFile to test Drag and Drop a file over a program. Observe that this is not a Dialog Application. Open Wintempla, double click on any part in GUI editor to open the Window Properties, and then click on the Events tab; finally check the event DropFiles. To test the program, drag and drop any file over the program.
Cree una Aplicación de Ventana de Wintempla llamada LeaveFile para probar el Arrastre y el Soltar un archivo sobre un programa. Observe que esta no es una Aplicación de Diálogo. Abra Wintempla, haga clic doble en cualquier parte del editor de la GUI para abrir la Ventana de Propiedades, y entonces haga clic en la pestaña de eventos; finalmente marque el evento de DropFiles. Para probar el programa arrastre y suelte cualquier archivo sobre el programa.

LeaveFileRun

LeaveFile.cpp
...
void LeaveFile::Window_Open(Win::Event& e)
{
     ::DragAcceptFiles(hWnd, TRUE);
}

void LeaveFile::Window_DropFiles(Win::Event& e)
{
     UINT fileCount = 0;
     wchar_t filename[1024];
     HDROP hdrop = (HDROP)e.wParam;
     if (::DragQueryFile(hdrop, fileCount, filename, 1024)>3)
     {
          filename[1023]='\0';
          this->MessageBox(filename, L"Drop", MB_OK);
     }
}


Problem 2
Cree a Wintempla Dialog Application called Integrate to test Drag and Drop items from one list view control to another one. To test the program, drag an item from the list view control on the left and drop it over the list view control on the right. Please select the following events:
  1. Set the BeginDrag event in the list view on the left
  2. Set the Mouse Move and LButtonUp events in the dialog

Cree una Aplicación de Diálogo de Wintempla llamada Integrate para probar el Arrastre y el Soltar un artículo de un control de list view a otro control de list vies. Para probar el programa arrastre cualquier artículo del list view de la izquierda y suéltelo sobre el control de list view de la derecha. Por favor selecciones los siguientes eventos:
  1. Seleccione el evento de BeginDrag en el list view de la izquierda
  2. Seleccione los eventos de Mouse Move y LButtonUp en el diálogo

IntegrateRun

Integrate.cpp
...
void Integrate::Window_Open(Win::Event& e)
{
     //________________________________________________________ lvLeft
     lvLeft.Cols.Add(0, LVCFMT_LEFT, 200, L"Left Day");
     lvLeft.Items.Add(0, L"Sunday");
     lvLeft.Items.Add(1, L"Monday");
     lvLeft.Items.Add(2, L"Tuesday");
     lvLeft.Items.Add(3, L"Wednesday");
     lvLeft.Items.Add(4, L"Thursday");
     lvLeft.Items.Add(5, L"Friday");
     lvLeft.Items.Add(6, L"Saturday");
     //________________________________________________________ lvRight
     lvRight.Cols.Add(0, LVCFMT_LEFT, 200, L"Right Day");
}

void Integrate::lvLeft_BeginDrag(Win::Event& e)
{
     lvLeft.BeginDrag(e);
}


void Integrate::Window_LButtonUp(Win::Event& e)
{
     Win::LVDropInfo lvdi = lvLeft.Drop(e, lvRight);
     if (lvdi.sourceItemIndex == -1 && lvdi.targetItemIndex == -1) return;
     wstring text = lvLeft.Items[lvdi.sourceItemIndex].GetText();
     lvRight.Items.Add(lvdi.targetItemIndex, text);
}

void Integrate::Window_MouseMove(Win::Event& e)
{
     lvLeft.Drag(e, lvRight);
}

© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home